package cn.wolfcode.service;


import cn.wolfcode.domain.OrderInfo;
import cn.wolfcode.domain.SeckillProductVo;
import cn.wolfcode.mq.OrderMQResult;

import java.util.Map;

/**
 * Created by wolfcode-lanxw
 */
public interface IOrderInfoService {

    /**
     * 根据用户和秒杀信息查询订单
     * @param phone
     * @param seckillId
     * @return秒杀订单
     */
    OrderInfo getOrderByAndSeckillId(String phone, Long seckillId);

    /**
     * 给用户创建秒杀订单，并执行库存-1操作
     * @param seckillProductVo
     * @param phone
     * @return
     */
    String doSeckill(SeckillProductVo seckillProductVo, String phone);

    /**
     * 根据订单号查询订单对象
     * @param orderNo
     * @return
     */
    OrderInfo find(String orderNo);

    /**
     * 判断订单支付是否超时，超时的情况取消订单
     * @param orderMQResult
     */
    void cancelOrder(OrderMQResult orderMQResult);

    /**
     * 支付宝支付
     * @param orderNo
     * @return
     */
    String payOnLine(String orderNo);

    /**
     * 订单支付成功回调逻辑
     * @param orderNo
     */
    void paySuccess(String orderNo);

    /**
     * 退款逻辑
     * @param orderNo
     */
    void refund(String orderNo);

    /**
     * 积分支付逻辑
     * @param orderNo
     */
    void payIntergral(String orderNo);
}
